home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ____ ____ ____ _ _ _ __ __ ________
- //¯¯\\ //¯¯\\ //¯¯\\ // // \\ //\\ //\\ ¯¯¯//¯¯¯
- // ¯ // ¯ // ¯ \\ \\ // // \\// \\ \\
- // ___ // // ___ // // \\ \\ ¯¯ // //
- \\ ¯¯\\ \\ \\ ¯¯¯ \\ \\ // // \\ \\
- \\ // \\ _ \\ _ _ \\ // \\ // //
- \\__// \\__// \\__// // \\// // \\ \\
- ¯¯¯¯ ¯¯¯¯ ¯¯¯¯ ¯ ¯¯ ¯ ¯ ¯
- v1.04ß für ATARI ST von Armin Diedering
-
-
-
-
- 1. Das Symptom
-
- Beim GNU C++ kam es vor, daß Module eine unverhältnismäßige Länge hatten.
- Bei mir z.B. ergab die Compilierung der Zeile "#include<library.h>" ein
- Modul mit knapp 3.5kByte.
-
- 2. Der Grund
-
- Um beim C++ eine dynamische Bindung bei virtuellen Funktionen zu
- erreichen, wird eine VMT (Virtual Method Table) verwendet. Die VMT ist
- eine Tabelle mit Funktionszeigern. Eine solche Tabelle wird für jede
- Classe, die virtuelle Funktionen enthält bzw. geerbt hat, erzeugt.
- Solche Tabellen werden nun in jedes Modul statisch abgelegt aber nicht nur
- die, die in diesem Modul benötigt werden. Sondern es wird für jede
- deklarierte Classe, ob nun die VMT in diesem Modul benötigt wird oder
- nicht, abgelegt. Je nach Umfang und Vererbungsgrad können schon mal
- mehrere kByte VMT-Leichen in einem Modul schlummern.
-
- 3. Die Lösung
-
- Die Lösung heißt GCC-!VMT. Dieses Programm klinkt sich zwischen den
- Compiler und den Assembler des GNU C++ und filtert unbenutzte Tabellen
- aus.
-
- 4. Die Installation
-
- Benötigt wird ein installiertes GNU C und die 2 Files GCC-CC1P.TTP und
- GCC-!VMT.TTP.
- Zur Installation sind nur 2 Schritte nötig:
- 1. Die Datei "GCC-CC1P.TTP" im Ordner "BIN" vom GNU C in "GCC-CC1P.BIN"
- umbenennen.
- 2. Die Dateien "GCC-CC1P.TTP" und "GCC-!VMT.TTP" in den Ordner "BIN"
- vom GNU C kopieren.
- fertig.
-
- Rechtliches
-
- GCC-!VMT ist Public Domain und darf und soll frei kopiert und weiter
- gegeben werden.
-
-
- 5. History
-
- GCC-!VMT v1.00ß
- das erste
-
- GCC-!VMT v1.01ß
- Infotext wird nun nicht mehr immer Angezeigt
-
- GCC-!VMT v1.02ß
- Infotext nur bei Compiler-Option -V
-
- GCC-!VMT v1.03ß
- Infotext auch bei Compiler-Option -Wall
- hierbei jedoch ohne Versions-Text
-
- GCC-!VMT v1.04ß
- Bug beseitigt. wenn asm() befehle Leerzeilen enthielten gingen
- Daten verloren.
-
-
- 6. Kontakt
-
- Bei Anmerkungen, Kritik oder Lobpreisungen könnt Ihr mir schreiben
- im Maus-Net an Armin Diedering @ L2
-
- __ ___ __
- / \\/ \\/ \\
- \_//\__//\_//
-
- oder per Post
-
- Armin Diedering
- Plötzkauer Ring
-
- 06366 Köthen
-
- ____________________________________________________
- / \\
- / Jedenfalls viel Spaβ und immer schmalen Code ... //
- \___________________________________________________//
-
-